﻿using System.Collections.Generic;
using System.Threading.Tasks;

namespace DimensionsHelper.Common.Contracts.Services;

/// <summary>
/// 用于选取本地文件
/// </summary>
public interface IFilePikerService
{

    /// <summary>
    /// 选取单个本地文件
    /// </summary>
    /// <param name="typeFilters">文件的扩展名筛选表达式列表</param>
    /// <returns>选择的文件，如果取消或未选取，返回<see langword="null"/></returns>
    Task<string?> PickSingleFileAsync(params string[] typeFilters);


    /// <summary>
    /// 选取多个本地文件
    /// </summary>
    /// <param name="typeFilters">文件的扩展名筛选表达式列表</param>
    /// <returns>选择到的文件列表，如果取消或未选取，返回空列表</returns>
    Task<IReadOnlyList<string>> PickMultipleFilesAsync(params string[] typeFilters);


    /// <summary>
    /// 选取单个本地文件保存路径
    /// </summary>
    /// <param name="typeFilters">文件的扩展名筛选表达式列表</param>
    /// <returns>选择的文件，如果取消或未选取，返回<see langword="null"/></returns>
    Task<string?> SaveFileAsync(params string[] typeFilters);
}